From: Giovanni Campagna Date: Tue, 20 Dec 2011 18:11:07 +0000 (+0100) Subject: IconGrid: don't force the size of the icon X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~7233 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=26580f8f;p=gnome-shell.git IconGrid: don't force the size of the icon Forcing the icon size will distort it unnecessarily, and will in any case not work if showing an animation (which is a ClutterGroup). Instead, set the size on the bin, and make it align its child if needed. https://bugzilla.gnome.org/show_bug.cgi?id=666606 --- diff --git a/js/ui/iconGrid.js b/js/ui/iconGrid.js index 1b9c90512..b93f6c018 100644 --- a/js/ui/iconGrid.js +++ b/js/ui/iconGrid.js @@ -35,7 +35,8 @@ const BaseIcon = new Lang.Class({ this.actor.set_child(box); this.iconSize = ICON_SIZE; - this._iconBin = new St.Bin(); + this._iconBin = new St.Bin({ x_align: St.Align.MIDDLE, + y_align: St.Align.MIDDLE }); box.add_actor(this._iconBin); @@ -125,12 +126,12 @@ const BaseIcon = new Lang.Class({ this.iconSize = size; this.icon = this.createIcon(this.iconSize); + this._iconBin.child = this.icon; + // The icon returned by createIcon() might actually be smaller than // the requested icon size (for instance StTextureCache does this // for fallback icons), so set the size explicitly. - this.icon.set_size(this.iconSize, this.iconSize); - - this._iconBin.child = this.icon; + this._iconBin.set_size(this.iconSize, this.iconSize); }, _onStyleChanged: function() { @@ -145,6 +146,11 @@ const BaseIcon = new Lang.Class({ size = found ? len : ICON_SIZE; } + // don't create icons unnecessarily + if (size == this.iconSize && + this._iconBin.child) + return; + this._createIconTexture(size); } });